grammar XHTML2CSV;

options {
	output=AST;
	ASTLabelType=CommonTree;
}

tokens {
	CELLULEG 	=  '<td>' ;   // simple lexemes
	CELLULED	=  '</td>' ;
	LIGNEG 		=  '<tr>' ;
	LIGNED		=  '</tr>' ;
	TABLED		=  '</table>' ;
	LIGNE;
	TABLEAU;
	CELLULE;
	
}

@members {
}
 
/*------------------------------------------------------------------
 * PARSER RULES
 *------------------------------------------------------------------*/

balise_table : TABLEALIGN ( position_table ) BORDER ENTIER FINBALISE milieu TABLED 
		-> ^(TABLEAU milieu) ;

position_table : GUILLEMET POS GUILLEMET ;

milieu :  (ldlg)* ;

ldlg : LIGNEG (cellule)* LIGNED 
		-> ^(LIGNE (cellule)*) ;

cellule	: CELLULEG CHAINE CELLULED 
		-> ^(CELLULE CHAINE); 

/*------------------------------------------------------------------
 * LEXER RULES
 *------------------------------------------------------------------*/
	
WHITESPACE : ( '\t' | ' ' | '\r' | '\n'| '\u000C' )+ {
				$channel = HIDDEN;
			} ;  															// skip white spaces

TABLEALIGN : ('<table align=') ;

BORDER : (' border=') ;

POS : ('center' | 'left' | 'right') ;

ENTIER : '\"' ('1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9')* '\"';

GUILLEMET : ('"') ;

FINBALISE : ('>') ;

CHAINE	:  (~('\"' | ',' | '\n' | '<' | '>'))+ ; 							// complex lexemes


